<?php

namespace App\V1\Repositories;

use \App\V1\Models\RDBS\Model;

/**
 * 资源库基类
 * @package App\V1\Repositories
 *
 * @remark
 * <p>把数据处理逻辑分离使得代码更容易维护</p>
 * <p>数据处理逻辑和业务逻辑分离，可以对这两个代码分别进行测试</p>
 * <p>减少代码重复</p>
 * <p>降低代码出错的几率</p>
 * <p>让controller代码的可读性大大提高</p>
 */
class RepositoryBase {

    #region 属性

    /**
     * 依赖注册组件
     * @var \Phalcon\Di
     */
    protected $di;

    /**
     * Model 对象
     * @var \App\V1\Models\RDBS\Model
     */
    protected $model;

    #endregion

    #region 构造函数

    /**
     * 构造函数
     * @param $di 依赖注册组件对象
     */
    function __construct($di = null) {
        $this->di = empty($di) ? \Phalcon\Di::getDefault() : $di;
    }

    #endregion

    function test() {
        $this->model = new Model();
        return $this->model->select("id,account")->from("admin")->get()->fetchAll();
    }

    #region 获取分页参数偏移量

    /**
     * 获取分页参数偏移量
     * @param $page 页码
     * @param int $size 要查询的数据总数
     * @return int
     */
    function getOffset($page, $size = 10) {
        return (($page ? $page : 1) - 1) * $size;
    }

    #endregion

}